home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 001-010 / amok02 / iffload / iffbitmapdemo.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  105 lines

  1. (*---------------------------------------------------------------------------
  2.     :Program.    IFFBitMapDemo.mod
  3.     :Author.     Fridtjof Siebert
  4.     :Address.    Nobileweg 67, D-7-Stgt-40
  5.     :Phone.      0711/822509
  6.     :Shortcut.   [fbs]
  7.     :Version.    1.0
  8.     :Date.       20.04.88
  9.     :Copyright.  PD
  10.     :Language.   Modula-II
  11.     :Translator. M2Amiga
  12.     :Imports.    IFFLoad [fbs].
  13.     :UpDate.     none.
  14.     :Contents.   Demo für dontopen-Option von ReadILBM().
  15.     :Remark.     Let's wave !!!
  16. ---------------------------------------------------------------------------*)
  17. MODULE IFFBitMapDemo;
  18.  
  19. FROM SYSTEM IMPORT ADR, ADDRESS, SHIFT, BITSET, LONGSET, CAST;
  20.  
  21. FROM Arguments IMPORT NumArgs,GetArg;
  22.  
  23. FROM Intuition IMPORT ScreenPtr,CloseScreen,DisplayBeep,WindowPtr,OpenScreen;
  24. FROM Graphics IMPORT BitMap,BitMapPtr;
  25. FROM Exec IMPORT FreeMem;
  26.  
  27. FROM IFFLoad IMPORT ReadILBM,ReadILBMFlags,ReadILBMFlagSet,NuScreen,IFFInfo,
  28.        IFFInfoType;
  29.  
  30. VAR
  31.   MyScreen: ScreenPtr;        (* the Picture's Screen *)
  32.   WindowDummy: WindowPtr;     (* a Dummy WindowPointer *)
  33.   Name: ARRAY[0..79] OF CHAR; (* the Pic's Name *)
  34.   length: INTEGER;            (* the Name's length (not used) *)
  35.   Ciapra [0BFE001H]: SET OF (s0,s1,s2,s3,s4,s5,lmb); (* left Button *)
  36.   MyBitMap: BitMapPtr;        (* for saving BitMapAddress *)
  37.   MyIFFInfo: IFFInfoType;     (* for saving IFFInfo *)
  38.   PlaneSize: LONGINT;         (* Size of one BitPlane *)
  39.   i: CARDINAL;                (* Counts BitPlanes *)
  40.  
  41. BEGIN
  42.  
  43. (*------  Get Name:  ------*)
  44.  
  45.   IF NumArgs()#0 THEN
  46.     GetArg(1,Name,length);
  47.   ELSE
  48.     HALT;
  49.   END;
  50.  
  51. (*------  Read ILBM:  ------*)
  52.  
  53.   IF ReadILBM(Name,ReadILBMFlagSet{front,visible,dontopen},MyScreen,
  54.               WindowDummy) THEN
  55.  
  56.     (*------  Save important Data:  ------*)
  57.  
  58.     MyIFFInfo := IFFInfo;
  59.     MyBitMap := NuScreen.customBitMap;
  60.     (* this needn't be done in this program, but has to, as soon as there  *)
  61.     (* are more than one Pictures loaded. So it's done in this Example     *)
  62.  
  63.     (*------  Open Screen:  ------*)
  64.  
  65.     MyScreen := OpenScreen(NuScreen);
  66.  
  67.     (*------  Wait for left Button:  ------*)
  68.  
  69.     WHILE lmb IN Ciapra DO END;
  70.  
  71.     (*------  Close Screen:  ------*)
  72.  
  73.     CloseScreen(MyScreen);
  74.  
  75.     (*------  Free BitMap's Memory:  ------*)
  76.  
  77.     (* calculate Size of BitPlane: *)
  78.     WITH MyIFFInfo.BMHD DO
  79.       IF scrnWidth>width THEN
  80.       (* If Image is greater than Screen, a bigger BitMap is allocated ! *)
  81.         PlaneSize := scrnWidth;
  82.       ELSE
  83.         PlaneSize := width;
  84.       END;
  85.       IF scrnHeight>height THEN
  86.         PlaneSize := PlaneSize DIV 8 * scrnHeight;
  87.       ELSE
  88.         PlaneSize := PlaneSize DIV 8 * height;
  89.       END;
  90.     END;
  91.     WITH MyBitMap^ DO
  92.       FOR i:=0 TO depth-1 DO
  93.         FreeMem(planes[i],PlaneSize); (* Free Memory of each Plane *)
  94.       END;
  95.     END;
  96.     FreeMem(MyBitMap,SIZE(BitMap)); (* Free Memory of BitMap-Structure *)
  97.  
  98.   ELSE (* any Error occured while loading Picture: *)
  99.  
  100.     DisplayBeep(NIL); (* Let's display a Beep ! *)
  101.  
  102.   END;
  103.  
  104. END IFFBitMapDemo. Never forget to free BitMap's Memory !!!
  105.